package com.muchfish.function;


/**
 * 函数式接口（Functional Interface）是指仅包含一个抽象方法的接口。函数式接口是Java中支持函数式编程的关键概念之一。函数式编程强调的是将计算视为数学函数的求值，并避免程序状态的改变。Java 8引入了Lambda表达式和函数式接口的概念，以更方便地支持函数式编程。
 *
 * 函数式接口具有以下特点：
 *
 * 1. **只包含一个抽象方法：** 函数式接口只能包含一个抽象方法。这个抽象方法定义了接口的行为，而其他非抽象方法可以有多个。
 *
 * 2. **可以有默认方法：** 除了唯一的抽象方法外，函数式接口可以包含多个默认方法。默认方法在接口中已经有默认的实现，但仍然可以被子类覆盖。
 *
 * 3. **可以有静态方法：** 函数式接口还可以包含静态方法。这些方法在接口级别上是静态的，不依赖于接口的实例。
 *
 * 在Java 8及以后的版本中，可以使用`@FunctionalInterface`注解来显式声明一个接口是函数式接口。这样，如果接口不符合函数式接口的定义，编译器会产生错误。函数式接口的引入使得使用Lambda表达式更加方便，因为Lambda表达式可以直接映射到函数式接口的抽象方法。
 */
@FunctionalInterface //加上该注解，若接口不符合函数式接口的定义，编译器会产生错误
public interface MyInterface {
    //抽象方法
    int sum(int i, int j);
    //静态方法
    default int defaultSum(int i, int j){
        return i + j;
    }
    //默认方法
    static int staticSum(int i, int j){
        return i + j;
    }

}
